אוסף תרגילים למעבדה ביוניקס - 4

Similar documents
מבוא לתכנות ב- JAVA תרגול 7

עץ תורשה מוגדר כך:שורש או שורש ושני בנים שכל אחד מהם עץ תורשה,כך שערך השורש גדול או שווה לסכום הנכדים(נכד-הוא רק בן של בן) נתון העץ הבא:

ניפוי שגיאות )Debug( מאת ישראל אברמוביץ

יסודות מבני נתונים. תרגול :9 ערימה - Heap

בוחן בתכנות בשפת C בצלחה

Practical Session No. 13 Amortized Analysis, Union/Find

Computer Structure. Exercise #1 יש להגיש את התשובות הסופיות על גבי טופס זה.

ASP.Net MVC + Entity Framework Code First.

אנגלית שאלון ז' (MODULE G) ג רסה א' הוראות לנבחן )מילון אנגלי-ערבי / ערבי-אנגלי )

א נ ג ל י ת בהצלחה! ב. משרד החינוך בגרות לנבחנים אקסטרניים )מילון הראפס אנגלי-אנגלי-ערבי( השימוש במילון אחר טעון אישור הפיקוח על הוראת האנגלית.

שאלון ו' הוראות לנבחן

אנגלית שאלון ז' ג רסה א' הוראות לנבחן בהצלחה! )4( ההנחיות בשאלון זה מנוסחות בלשון זכר ומכוונות לנבחנות ולנבחנים כאחד. (MODULE G)

אנגלית (MODULE E) בהצלחה!

שאלון ו' הוראות לנבחן

מערכים Haim Michael. All Rights Reserved.

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

סה"כ נקודות סה"כ 31 נקודות סה"כ 21 תוכן עניינים של פתרון המבחן. לולאת for )נתון אלגוריתם... מעקב, פלט

מבוא למחשב בשפת פייתון

מספר השאלון: Thinking Skills נספח: כישורי חשיבה )לפרק ראשון ושני( א נ ג ל י ת (MODULE F) ספרות )מילון הראפס אנגלי-אנגלי-ערבי(

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE F) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

שאלון ד' הוראות לנבחן

פרק מיון וחיפוש - לשם מה? הגדרה

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי

A R E Y O U R E A L L Y A W A K E?

אנגלית ספרות בהצלחה! /המשך מעבר לדף/ נספח: כישורי חשיבה )לפרק ראשון ושני( או: מילון אנגלי-ערבי / ערבי-אנגלי או: מילון אנגלי-אנגלי-ערבי

תוכן העניינים: פרק סדרות סיכום תכונות הסדרה החשבונית:... 2 תשובות סופיות:...8 סיכום תכונות הסדרה ההנדסית:...10

קשירות.s,t V שני צמתים,G=(V,E) קלט: גרף מכוון מ- s t ל- t ; אחרת.0 אם יש מסלול מכוון פלט: הערה: הגרף נתון בייצוג של רשימות סמיכות.

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

Hebrew Ulpan HEB Young Judaea Year Course in Israel American Jewish University College Initiative

תצוגת LCD חיבור התצוגה לבקר. (Liquid Crystal Display) המערכת.

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון א' Corresponds with Module A (Without Access to Information from Spoken Texts) גרסה א'

Advisor Copy. Welcome the NCSYers to your session. Feel free to try a quick icebreaker to learn their names.

נספח: כישורי חשיבה )לפרק ראשון ושני( אנגלית (MODULE D) ספרות או מילון אנגלי-עברי-עברי-אנגלי

מכונת מצבים סופית תרגול מס' 4. Moshe Malka & Ben lee Volk

Rules Game (through lesson 30) by Nancy Decker Preparation: 1. Each rule board is immediately followed by at least three cards containing examples of

(MODULE E) ב ה צ ל ח ה!

זו מערכת ישרת זוית )קרטזית( אשר בה יש לנו 2 צירים מאונכים זה לזה. באותו מישור ניתן להגדיר נקודה על ידי זוית ורדיוס וקטור

ãówh,é ËÓÉÔê ÌW W É Å t" Y w f É ËÓÉÑ É èw É f Ñ u ð NNM YóQ' ÌW W É Y ÉgO d óqk É w f ym Éd É u ð NNM ÌWNQMH uqo ð NNM ÌWNQMH

בחינת בגרות, תשע"ז מס' שאלון: מדעי המחשב שאלה 1. Java. blog.csit.org.il הילה קדמן

7 קרפ תויגול,תויטמתירא תודוקפ הזזהו

טכנולוגיית WPF מספקת למפתחים מודל תכנות מאוחד לחוויית בניית יישומיי

תכנית סטארט עמותת יכולות, בשיתוף משרד החינוך א נ ג ל י ת שאלון ב' Corresponds with Module B גרסה ב' הוראות לנבחן

ANNEXURE "E1-1" FORM OF IRREVOCABLE STANDBY LETTER OF CREDIT PERFORMANCE OF CONTRACT (WHERE PRICES ARE NOT LINKED TO AN ESCALATION FORMULA)

מספר ת"ז: יש לסמן את התשובה הטובה ביותר בתשובון. לא יינתן ניקוד על סימון תשובה בטופס הבחינה או במחברת הבחינה.

המחלקה למדעי המחשב, אוניברסיטת בן גוריון מבני נתונים, סמסטר אביב 2102 עבודת בית מספר - 2 מעשית

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

הקיטסיגול הרבחה יעדמל בלושמה גוחה

למבחן ביסודות מדעי המחשב דוגמא

תרגול 11 תור עץ חיפוש בינארי

בהצלחה! (MODULE C) Hoffman, Y. (2014). The Universal English-Hebrew, Hebrew-English Dictionary

תרגול 8. Hash Tables

הצעת תשובות לשאלות בחינת הבגרות אנגלית

ב. משרד החינוך בגרות לנבחנים אקסטרניים א נ ג ל י ת (MODULE B) הוראות מיוחדות: )2( בתום הבחינה החזר את השאלון למשגיח. בהצלחה!

המבנה הגאומטרי של מידה

מספר השאלון: הצעת תשובות לשאלות בחינת הבגרות אנגלית (MODULE C) מילון אנגלי-אנגלי-עברי או מילון אנגלי-עברי-עברי-אנגלי قاموس إنجليزي - إنجليزي - عربي

Depth-First Search DFS

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 102 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 5

Patents Basics. Yehuda Binder. (For copies contact:

אוניברסיטת בן גוריון בנגב

A JEW WALKS INTO A BAR: JEWISH IDENTITY IN NOT SUCH JEWISH PLACES

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מבוא למחשב בשפת Matlab

שאלות חזרה לקראת מבחן מפמ"ר אינטרנט וסייבר

מבני נתונים תרגיל 5 שאלות לגבי העבודה יש להעלות בפורום של הקורס או בשעות הקבלה של המרצה או המתרגל האחראיים על העבודה.

פרק יעילות היעילות של קריטריון המקום עוסק בנושאים דומים לאלה של קריטריון הזמן. אנו נתרכז בחישובי היעילות של מדד הזמן.

קורס מטלב לפיסיקאים שיעור מס' 10: משתנים מורכבים

מ ש ר ד ה ח י נ ו ך ה פ ד ג ו ג י ת א ש כ ו ל מ ד ע י ם על ה ו ר א ת ה מ ת מ ט י ק ה מחוון למבחן מפמ"ר לכיתה ט', רמה מצומצמת , תשע"ב טור א'

SEEDS OF GREATNESS MINING THROUGH THE STORY OF MOSHE S CHILDHOOD

2 יחידות לימוד הוראות לנבחן רשו ם "טיוטה" בראש כל עמוד טיוטה. רישום טיוטות כלשהן על דפים שמחוץ למחברת הבחינה עלול לגרום לפסילת הבחינה!

Name Page 1 of 5. ,דף ד: This week s bechina starts at the bottom of שיר של חול

Name Page 1 of 6. דף ט: This week s bechina starts at the two dots in the middle of

THINKING ABOUT REST THE ORIGIN OF SHABBOS

ל"תוכנה" שכותבים, כמו פונקציה זו, קוראים "קוד"

מבחן באנגלית בהצלחה הצלחה!!! שם פרטי: שם משפחה: מס' תעודת זהות: תאריך: שם מרכז מנהל מרכז השכלה: תאריך בדיקת המבחן: כל הזכויות שמורות למשרד החינוך

Visual C# Express יסודות מדעי המחשב 1 מהדורת עיצוב תשס"ו 2006 כתבה: יעל בילצ'יק (סופרין)

sharing food intro price & extra drinks * ניתן להזמין מנות כשרות בתאום מראש for good memories

FILED: NEW YORK COUNTY CLERK 07/16/2014 INDEX NO /2014 NYSCEF DOC. NO. 134 RECEIVED NYSCEF: 07/16/2014 EXHIBIT 37

Reflection Session: Sustainability and Me

תרגיל בית מספר - 1 להגשה עד 9 בנובמבר בשעה 23:55

SPSS 10.0 FOR WINDOWS

איתור במחסן הוא יחידת המרחב הקטנה ביותר שניתן להתייחס אליה, במחסן שבו מאוחסנות הסחורות שלך. מחסנים שורה 1 שורה 2 שורה 3

SHABBOS, 10 TAMMUZ, 5778

סוגי פניות בתוכנית הלימודים עיוני משולב מעשי 180 דקות 4 שיעורים

JUDAISM AND INDIVIDUALITY

חזרה, מיונים פולינה לוצקר

תורשכ ירפס לכ ץבוק " ב י קלח יללכ רעש

SHABBOS, 2 MENACHEM AV, 5778

מבוא לאסמבלי מאת אופיר בק חלקים נרחבים ממאמר זה נכתבו בהשראת הספר "ארגון המחשב ושפת סף" אשר נכתב ע"י ברק גונן לתוכנית גבהים של משרד החינוך.

כפתור רדיו בחירה בודדת מתוך רשימת אפשרויות

חוק זכויות הסוכן חוק חוזה סוכנות )סוכן מסחרי וספק(

Structural Vs. Nominal Typing

מבוא למדעי המחשב בשפת JAVA חוברת תרגילים... 1

מבוא לתכנות - פיתוח משחקים ב Action Script 3.0

מותאמת לסביבת. Visual C# 2005 Express שונות. ולבצע rename לשם המבוקש

הטכנולוגיה בחינוך ד ר קובי גל אוניברסיטת בן גוריון בנגב


Transgender in Halacha

Global Day of Jewish Learning

ב "ה. ABC s of Judaism. Fundamentals of Jewish Thought and Practice. June 2007 Tammuz 5767 Jewish Educational Institute Chabad Brisbane

פרצות אבטחה נפוצות בהעלאת קבצים בעזרת PHP

Transcription:

אוסף תרגילים למעבדה ביוניקס - 4 כתב וערך שייקה בילו תרגיל מספר 1 א. הבעיה של קוראים/כותבים (readers/writers) עם עדיפות לכותבים עוסקת בגישה של תהליכים למבנה נתונים משותף. סמן את הדרישות מפיתרון של הבעיה: א. יכול להיות לכל היותר כותב אחד בקטע הקריטי ב. יכול להיות לכל היותר קורא אחד בקטע הקריטי ג. יכולים להיות מספר כותבים בקטע הקריטי בו-זמנית ד. יכולים להיות מספר קוראים בקטע הקריטי בו-זמנית ה. אסור לכותבים וקוראים להיות בקטע הקריטי בו-זמנית ו. אם יש גם קוראים וגם כותבים המחכים להיכנס לקטע הקריטי,הכותבים מקבלים עדיפות ז. אסור להרעיב כותבים שמנסים להיכנס לקטע הקריטי ח. אסור להרעיב קוראים שמנסים להיכנס לקטע הקריטי ב. להלן הצעה לפתרון בעיית הקוראים/כותבים עם עדיפות לכותבים: //S is a semaphore initialized to 1; //writer: P(S); Critical Section V(S); wakeup_all_sleeping_processes(); //reader: while (S.value =< 0) { sleep(); P(S); Critical Section V(S); ג. סמן את הטענות הנכונות לגבי הפתרון הנ"ל,בהנחה שאכן יש גישה לערך של הסמפור,ושהסמפור הגון כלומר תהליך שמבצע P יכנס אחרי מספר סופי של פעולות V): א. הפתרון שגוי משום שהוא לא מאפשר ליותר מקורא אחד להיכנס לקטע הקריטי בו-זמנית ב. הפתרון שגוי משום שהוא לא מאפשר ליותר מכותב אחד להיכנס לקטע הקריטי בו-זמנית ג. הפתרון שגוי משום שיותר מקורא אחד יכול להיכנס לקטע הקריטי בו-זמנית ד. הפתרון שגוי משום שיותר מכותב אחד יכול להיכנס לקטע הקריטי בו-זמנית ה. הפתרון שגוי משום שגם קוראים וגם כותבים יכולים להיכנס לקטע הקריטי בו-זמנית ו. הפתרון שגוי משום שקורא יכול להיתקע בכניסה לקטע הקריטי לפרק זמן לא סופי ז. הפתרון שגוי משום שכותב יכול להיתקע בכניסה לקטע הקריטי לפרק זמן לא סופי 1

תרגיל מספר 2 לפניך תוכנית לדוגמה:יצרן-צרכן #include <stdio.h> #include <pthread.h> #include <semaphore.h> int num, // common variable of producer & consumer nprinted; // common flag: whether printing has been completed sem_t empty, // Binary sem.: Can producer write to 'num' avail; // Binary sem.: Can consumer read from 'num' // Printing monitor: pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER; pthread_cond_t print_done = PTHREAD_COND_INITIALIZER; // Produces the numbers 1.. arg and writes them to 'num' void *producer(void *arg); // Consumes numbers from 'num' and prints them out as long as new ones // are produced: void *consumer(void *arg); int main() { pthread_t p, c; 2 sem_init(&empty, 0, 1); // // Initially, producer should write a // value to 'num' sem_init(&avail, 0, 0); // // Consumer must wait until first number // is available if (pthread_create(&p, NULL, producer, (void *) 100)) exit(1); if (pthread_create(&c, NULL, consumer, NULL)) exit(2); pthread_join(p, NULL); // NOTE: 'c' is not joined, as it performs an infinite loop; // however, it is cancelled when 'main' exits. Therefore, 'main' // must wait until last number is printed out sem_wait(&empty); // // Waiting until consumer reads last value of // 'num' into a local variable pthread_mutex_lock(&m); if (!nprinted) // if last number has not been printed yet pthread_cond_wait(&print_done, &m); pthread_mutex_unlock(&m);

sem_destroy(&empty); sem_destroy(&avail); void *producer(void *arg) { int max = (int) arg, i; for (i = 1; i <= max; i++) { sem_wait(&empty); num = i; sem_post(&avail); return NULL; void *consumer(void *arg) { int n; while (1) { sem_wait(&avail); n = num; nprinted = 0; // Preventing 'main' from finishing before last // number is printed out sem_post(&empty); printf("%d\n", n); pthread_mutex_lock(&m); nprinted = 1; // Since printing is done pthread_cond_signal(&print_done); // // For the case where 'main' // is already waiting pthread_mutex_unlock(&m); return NULL; משימות: 1. כתובאתהתוכנית ובצעהידור. 2. בדוקתנאיכניסה ובדוקתקינותקלט. 3. הסברבכמהמיליםמהעושההתוכנית. 4. הסברמהיהיההפלטשלהבסיוםהריצה. 5. הסברמהוסמפורולמהמשמשהסמפורבתוכניתזו..6 הסברמהו?mutex 3

תרגיל מספר 3 לפניך תוכנית המציגה תהליכי מיון מיזוג (Mergesort) בתרגיל זה עליכם לממש את שיטת מיוןמיזוג (Mergesort) באופן מקבילי בעזרת תהליכוני.(POSIX Threads) POSIX לשם כך יש להוסיף בקובץ המקור את השורה: #include <pthread.h> בנוסף, יש להוסיף בשורת-הפקודה להידור את הדגל l עם הארגומנט ;pthread כלומר, שורת-הפקודה תהיה, לדוגמה: > gcc o exec-file l pthread source-file התכנית תקלוט, לתוך מערך, רשימה של מספרים שלמים מטיפוס,long המופרדים בריווח לבן space) = white רווח, טאב או.(newline בכל שלב, ימוינו בנפרד שני חצאי המערך, וימוזגו לאחר מכן. מיון של כל חצי כזה יתבצע ע"י תהליכון חדש. במקרה של מספר אי-זוגי של איברים, ייחצה התחום כך שהחלק הגדול יותר יהיה בצד שמאל (האינדקסים הקטנים יותר). מובן, שאין צורך ליצור תהליכון חדש עבור מערך בגודל 1, שהרי הוא כבר ממוין, בהגדרה. התכנית תקלוט חסם עליון למספר האיברים, שמותר לטפל בהם באופן מקבילי *. במקרה שמספר האיברים באחריותו של תהליכון מסוים גדול מחסם זה, ימתין התהליכון לסיום תהליכון-הבן הראשון (האחראי על מיון חציו השמאלי של המערך), ורק אחר-כך ייצור את תהליכון-הבן השני (האחראי על מיון חציו הימני). מיד בתום ההמתנה, לפני יצירת תהליכון-הבן השני (אם בכלל), תודפס בשורה נפרדת ההודעה: [l h] joined כאשר l ו- h מייצגים את האינדקס הנמוך ביותר ואת האינדקס הגבוה ביותר, בהתאמה, בחצי המערך השמאלי, שמיונו הסתיים זה עתה. במקרה של טיפול מקבילי, לא תודפס ההודעה הנ"ל (ראה דוגמה להלן). המיון יתבצע בעזרת שני מערכים בגודל שווה, אשר יוקצו בצורה דינאמית (ע"י פונקצית הספרייה (malloc וינוהלו ע"י שני מצביעים גלובאליים. למערך אחד ייקלטו כל מספרי הקלט, ואילו המערך השני ישמש כמערך-עזר בתהליך המיון. מספר נתוני הקלט יועבר דרך שורת-הפקודה (ראה להלן). האיברים עצמם ייקלטו מן הקלט התקני באמצעות scanf עם."%ld" מובן, כי ניתן יהיה להפנות קלט מקובץ בעזרת סימן '>' בשורת-הפקודה. במקרה של אי-התאמה בין מספר הקלטים המוצהר לבין מספרם בפועל, תדפיס התכנית בשורה נפרדת את ההודעה: Wrong number of inputs ותסתיים מיד עם ערך יציאה 1. הערה: כאשר מגיעה פונקציה scanf לסוף קובץ הקלט, היא מחזירה את התו.EOF בעבודה הידודית (כלומר, הקלט התקני מגיע מהמקלדת), ניתן לציין את סוף הקלט ע"י הקשת.Ctrl-d כאשר מסתיים מיון קטע המערך l h ע"י תהליכון מסוים, תודפס השורה:.[l h] ובשורה הבאה איברי הקטע לאחר המיון, כאשר רווח (' ') מפריד בין איבר לאיבר. כל ההדפסות בתכנית, למעט במקרי שגיאה בקלט, תתבצענה ע"י תהליכון מיוחד, המיועד אך ורק למטרה זו. כל תהליכון אחר, המעוניין בהדפסה, יעביר לתהליכון זה את הנתונים הנחוצים דרך שלושה משתנים משותפים:.1 l אינדקסנמוך (שמאלי). * כדי למנוע קיום מספר רב מדי של תהליכונים בעת ובעונה אחת. 4

.2 h אינדקסגבוה (ימני)..3 message משתנהמסוג enum,char וכדומה, אשריצייןהדפסתהודעתצירוף joined") ("[l h] אותוצאתמיון, כמפורטלעיל. תיאום הקריאה והכתיבה בין התהליכונים יתבצע באמצעות שני סמפורים בינאריים: האחד (empty) למניעת כתיבה של נתונים חדשים בטרם טופלו הנוכחיים, והאחר (avail) למניעת קריאה בטרם הוכנסו נתונים חדשים. בנוסף לכך, יש להגדיר פקח,(Monitor) אשר יבטיח כי התכנית לא תסתיים בטרם יודפס הפלט האחרון. צורך זה נובע מהעובדה, שתהליכון ההדפסה אינו יודע מראש בכמה קלטים יצטרך לטפל. לכן, עליו לבצע לולאה אינסופית, אשר תופסק ע"י התהליכון הראשי רק לאחר צירוף כל תהליכוני החישוב. ואולם, אין לסיים את התכנית לפני שיודפסו כל הפלטים. מכאן, שאם טרם הודפס הפלט האחרון, על התהליכון הראשי להמתין לאירוע זה. בנספח נתונה תכנית, המדגימה מימוש של יצרן-צרכן בעל תכונות דומות. ככלל, עליכםלדאוגלכך, שקטעיםקריטייםיהיוקצריםככלהאפשר. #include <semaphore.h> command-name max-parallel number-of-elements כדי להשתמש בסמפורים, יש להוסיף בקובץ המקור את השורה: תחביר הפקודה: :command-name שם הפקודה,a.out) mergesort או כל שם שיינתן לקובץ הריצה). :max-parallel חסם עליון למספר האיברים למיון מקבילי; מספר חיובי בלבד. :number-of-elements מספר הקלטים להם מצפה התכנית (נדרש לצורך הקצאת שני המערכים בגודל זה); מספר חיובי בלבד. בכל מקרה של ארגומנטים בלתי-תקינים (כולל מחסור/עודף בארגומנטים), תודפס ההודעה: Usage: command-name <max-parallel> <number-of-elements> Both arguments must be positive integers והתכנית תסתיים מיד עם ערך יציאה 2 (במקום command-name יודפס שם קובץ הריצה.(argv[0] 5

> mergesort 5 10 5 2 3 7 0 9 4 12 1 3 // various white spaces [0 1] 2 5 [3 4] 0 7 [0 2] 3 2 5 [0 4] 3 0 2 5 7 [0 4] joined [5 6] 9 4 [5 7] 9 4 12 [8 9] 1 3 [5 9] 9 1 3 4 12 [0 9] 9 3 1 0 2 3 4 5 7 12 דוגמתריצה בהצלחה! 6